#include <iostream>
#include<cstring>
using namespace std;

struct Node 
{
    int l,r,mid,sum;
}node [500000];

void buildTree(int a,int b,int n)
{
    node[n].l=a;
    node[n].r=b;
    node[n].mid=(a+b)/2;
    node[n].sum=0;
    
    if(a+1==b)
    return ;
    buildTree(a,(a+b)/2,2*n);
    buildTree((a+b)/2,b,2*n+1);
}
void add(int pos,int value,int n)
{
    node[n].sum+=value;
    if(node[n].l+1==node[n].r)
    return ;
    if(pos<node[n].mid)
    {
        add(pos,value,2*n);
    }
    else
    {
        add(pos,value,2*n+1);
    }
}
void sub(int pos,int value,int n)
{
    node[n].sum-=value;
    if(node[n].l+1==node[n].r)
    return ;
    if(pos<node[n].mid)
    {
        sub(pos,value,2*n);
    }
    else
    {
        sub(pos,value,2*n+1);
    }
}
int query(int a,int b,int n)
{
    if(node[n].l==a && node[n].r==b)
    return node[n].sum;
    if(a<node[n].mid)
    {
        if(b<=node[n].mid)
        {
            return query(a,b,2*n);
        }
        else
        return query(a,node[n].mid,2*n)+ query(node[n].mid,b,2*n+1);
    }
    else
    return query(a,b,2*n+1);
}

int main()
{
    int ca,i,t,a,b,n;
    char ch[10];
    cin >>ca;
    for(i=1;i<=ca;i++)
    {
        cout <<"Case "<<i<<":"<<endl;
        cin >>n;
        buildTree(1,n+1,1);
        for(int j=1;j<=n;j++)
        {
            cin >>t;
            add(j,t,1);
        }
        //getchar();
        while(cin >>ch,strcmp(ch,"End"))
        {
            cin >>a>>b;
            if(ch[0]=='Q')
            cout <<query(a,b+1,1)<<endl;
            if(ch[0]=='A')
            add(a,b,1);
            if(ch[0]=='S')
            sub(a,b,1);
            //getchar();
        }
    }
    return 0;
}
            
            
        

